1. Field of the Invention
The present invention relates to integrated circuit technology and to integrated circuits used in data communications technology. More particularly, the present invention relates to data communications technology utilizing packet-type networked signaling systems. Still more particularly, the present invention will find particular applicability in full-duplex Ethernet Local Area Network (LAN) systems conforming to IEEE standard 802.3x.
2. The Background Art
Ethernet is a CSMA/CD protocol. CSMA/CD (Carrier Sense, Multiple Access, Collision Detect) means that: (1) all stations on the network share the network and have equal access to the same network media ("Multiple Access"); (2) since the network is shared, only one station can transmit on the network at a time and as a consequence, every station has to listen to the network and make sure that no other station is transmitting before that station can transmit ("Carrier Sense"); and (3) in the event that two stations on the network do transmit simultaneously (a condition termed a "collision"), each station on the network must sense the collision and retransmit data later when the network is quiet ("Collision Detect").
The Institute of Electrical and Electronic Engineers (IEEE) has introduced a series of standards referred to as the 802.3 protocol for implementing Ethernet networks. All Ethernet networks are supposed to conform to this set of standards in order to maintain a base level of interoperability. A portion of this specification is presently entitled "IEEE P802.3x/D3.2 Supplement to Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method & Physical Layer Specifications: Specification for 802.3 Full Duplex Operation" and another portion is presently entitled "IEEE Draft P802.3z/D3.1 Supplement to Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method & Physical Layer Specifications: Media Access Control (MAC) Parameters, Physical Layer, Repeater and Management Parameters for 1000 Mb/s Operation" dated Jul. 18, 1997. These are both hereby incorporated by reference as if set forth fully herein.
The IEEE 802.3 protocol defines the various aspects of a standard Ethernet LAN system. FIG. 1 is a diagram showing the relationships of the various components of the Physical Layer and Data Link Layer in accordance with the ISO/IEC 8802-3 Open Systems Interconnection (OSI) Reference Model and the IEEE 802.3 CSMA/CD LAN Model. The diagram shows four different implementations: the 1 Mb/s-10 Mb/s version at the left, the 10 Mb/s version, the 100 Mb/s version and the 1000 Mb/s (1 Gb/s) version at the right. In the diagram, from the bottom to the top, the Physical Layer 8 comprises the following: the "MEDIUM" 10 refers to the physical medium over which data is transmitted, i.e., twisted pairs of wires, fiber optic waveguide, coaxial cable, etc.; the "MDI" 12 is a Medium Dependent Interface--an interface between the specific medium used MEDIUM 10 and the Physical Layer Device (PHY) 14; the PHY may include a Physical Medium Attachment (PMA) 16, a Physical Coding Sublayer (PCS) 18, and a Gigabit Media Independent Interface (GMII) 20 along with a Reconciliation function 22 which reconciles signals between the MAC 26 and the GMII 20.
At the Data Link Layer 24, above the Physical Layer 8, are the Media Access Control (MAC) 26 which controls access to the MEDIUM 10 as through a collision detection system, the optional MAC Control 28 which is responsible for sending and receiving MAC Control Frames for handling flow control; and the Logical Link Control (LLC) 30 which is a software layer controlling the hardware layers below it.
According to this model, the layers interact by way of well defined interfaces, providing services as specified in the IEEE protocol. In general, the interface requirements are shown in FIG. 2 and are as follows:
(1) The interface between the MAC sublayer 26 and its client 31 includes facilities for transmitting and receiving frames, and provides per-operation status information for use by higher-layer error recovery procedures. PA0 (2) The interface between the MAC sublayer 26 and the Physical layer 14 (FIG. 1) includes signals for framing (e.g., receive data valid, transmit indication) and contention resolution (e.g., collision detect), facilities for passing a pair of serial bit streams (i.e., transmit, receive) between the two layers. PA0 (1) The physical medium is capable of supporting simultaneous transmission and reception without interference; PA0 (2) There are exactly two stations on the LAN. This allows the physical medium to be treated as a full-duplex point-to-point link between the stations. Since there is no contention for use of a shared medium, the multiple access (i.e., CSMA/CD) algorithms are unnecessary; and PA0 (3) Both stations on the LAN are capable of, and have been configured to use, full-duplex operation. PA0 (1) The globally-assigned 48 bit multicast address 0180-C200-0001.sub.HEX ; PA0 (2) The PAUSE opcode; and PA0 (3) A request.sub.-- operand indicating the length of time (in slot time units transmission.
Communication over an 802.3 LAN occurs between PHY 14 entities. Full-duplex operation allows simultaneous communication between a pair of stations using point-to-point media 10 (dedicated channel). Full-duplex operation does not require that transmitters defer, nor that they monitor or react to collisions, as there is no contention for a shared medium in this mode. Full-duplex is thus available when all of the following are true:
The most common configuration envisioned for full-duplex operation consists of a central bridge (also known as a switch) with a dedicated LAN connecting each bridge port to a single device.
Early Ethernet was based on a bus topology. In a bus topology all stations are connected to one data bus and all stations use the same data bus for transmitting data and receiving data. The first IEEE standardized "bus" media was actually a coaxial cable. This bus topology was well suited for the CSMA/CD protocol. Note that bus topologies (and CSMA/CD) only support half-duplex operation; that is, a station can only transmit data or it can receive data, but it cannot simultaneously transmit and receive data at the same time.
Later, users wanted to migrate away from relatively expensive coaxial cable as a media connection between stations and use common (and less expensive) telephone wire (also known as twisted pair cable) instead. The use of twisted pair cable for Ethernet networks was then standardized by the IEEE and is now commonly designated as "10BaseT". 10BaseT was different from its coaxial predecessor in that a 10BaseT network uses a "star topology". A star topology is a network configuration in which each station on the network is connected to a central repeater (also referred to as a "hub"), and there is a separate twisted pair cable for the transmit and receive directions between each station and the repeater. The repeater performed the CSMA/CD functions of repeating a signal from a station to all other stations on the network. This allowed seamless operation with the older bus topology, coaxial based Ethernet.
As time went on, Ethernet became widely deployed and 10BaseT became the medium of choice for networked computers. The success of 10BaseT caused a problem in that networks with lots of users became congested resulting in slow response. Since repeaters basically repeat a transmit packet from one station to all the rest of the stations on the network, a single active station could conceivably dominate the entire bandwidth of the network and other stations could experience significant delays in getting access to the network. To solve this problem, Ethernet switches were invented. Ethernet switches route packets from one station directly to those stations that are supposed to receive the packet. The other stations tied to the switch do not receive the packet and thus can still pass data through the network (unlike a repeater which ties up all stations while one station is transmitting). Hence, the rest of the users are free to access the rest of the network and are not impacted by a few high bandwidth users as much as they would be in repeater based LANs. Ethernet switches are directly analogous to telephone switches that route telephone calls from one point to another.
About the same time that Ethernet switches were invented, full-duplex Ethernet was invented. It was discovered that if 10BaseT had separate wire pairs for both receive and transmit directions, and if those wire pairs were connected directly to an Ethernet switch or similar device, then data could conceivably be transmitted and received at the same time because there were two distinct wire pairs (this is not true with coaxial Ethernet). This was commonly referred to as full-duplex operation. Full-duplex operation had the capability of doubling the maximum bandwidth on 10BaseT links because transmission and reception occurs simultaneously. Note that full-duplex operation requires that the collision mechanism be disabled because transmitting and receiving at the same time is defined to be a collision condition in the original Ethernet protocol.
Occasionally, an Ethernet switch can be temporarily filled to capacity or become bandwidth limited because of a high level of data activity on the individual ports. When this happens, packets can be dropped or discarded because of lack of internal switch bandwidth or memory. To prevent loss of data during times when the switch is overloaded or congested, flow control mechanisms are needed to give the switch the capability to regulate the flow of data into the switch.
The most common flow control technique used in Ethernet to stop data coming into the switch during times of maximum congestion is to forcibly create a collision on ports that are sending data to the switch. This forced collision will cause the far end station to stop transmitting data and retransmit data later in accordance with the Ethernet collision protocol. This is referred to as collision based flow control. Collision based flow control works well for half-duplex links, but it does not work at all for full-duplex links because the collision mechanism is disabled in full-duplex operation.
For full-duplex links new flow control mechanisms were invented. The early flow control mechanisms were proprietary to a particular vendor's equipment. Since these mechanisms were proprietary, the flow control mechanisms did not interoperate with equipment from other vendors. This fact rendered these proprietary flow control mechanisms useless in large networks composed of equipment obtained from a variety of different vendors.
In 1994, the IEEE formed the 802.3x Task Force with the charter of standardizing full-duplex operation and developing a standardized flow control mechanism. Many presentations were made at 802.3x meetings proposing a plethora of flow control schemes. Finally, the Task Force converged on one scheme and produced a final released draft standard that was formally adopted in 1997. The final draft standard is referred to as IEEE P802.3x/D3.2 and is entitled "Supplement to Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method & Physical Layer Specifications: Specification for 802.3 Full-Duplex Operation". This specification document is hereby incorporated herein by reference as if set forth fully herein. The 802.3x flow control mechanism is fairly simple. It implements a new kind of Ethernet packet called a MAC Control frame which is used by the MAC Control Layer 28 for implementing hardware flow control.
The MAC frame format was originally defined in the IEEE 802.3 protocol and is updated in IEEE P802.3x at FIG. 3-1 and is reproduced here at FIG. 3. The MAC frame format consists of eight fields: the preamble 32, the Start-of-Frame Delimiter (SFD) 34, the addresses of the frame's destination ("destination address field" or "DA") 36 and source ("source address field" or "SA") 38, a Length/Type field (L/T) 40 to indicate the length or protocol type of the following field (DATA) 42 containing the MAC Client data to be transmitted, a PAD field 44 that contains padding if required, and the frame check sequence (FCS) field 46 containing a cyclic redundancy check value to detect errors in received frames. Of these eight fields, all are of fixed size except the DATA and PAD fields, which may contain any integer number of octets between the minimum and maximum values determined by the specific implementation of the CSMA/CD MAC.
The preamble field is a 7-octet field that is used to allow the Physical Layer Signalling (PLS) circuitry to reach its steady-state synchronization with the received frame timing. It consists of 56 bits of alternating 1's and 0's.
The SFD or Start of Frame delimiter is the 8-bit sequence "10101011" or AB.sub.HEX. It immediately follows the preamble pattern and indicates the start of a frame.
MAC frame addresses are all 48 bits in length. The least significant bit (LSB) of the destination address field is an address type designation bit to identify the destination address either as an individual or a group address. If this bit is 0, it indicates that the address field contains an individual address. If this bit is 1, it indicates that the address field contains a group address that identifies none, one or more, or all of the stations connected to the LAN.
In the source address field, the first bit is reserved and is always set to 0. The next least significant bit is used to distinguish between locally or globally administered addresses. For globally administered (universal) addresses, the bit is set to 0. If an address is to be assigned locally, this bit is set to 1. For broadcast addresses, this bit is set to 1. A broadcast address denotes the set of all stations on a given LAN. A multicast-Group address denotes a group of logically related stations on a given LAN. A broadcast address is predefined as FFFFFF.sub.HEX.
The Source Address field 38 is also a 48-bit address field containing the specific station address from which the frame originated. The format of the address field is as defined in IEEE 802.3.
The Length/Type Field 40 is a 16-bit field which takes on the meaning of packet length or packet type, depending on its numeric value. If the decimal value of the Length/Type field 40 is 0-1518, then it represents a length, i.e., the total number of bytes in the packet exclusive of the preamble 32 and the SFD 34. If the decimal value of the Length/Type field 40 is 1519-1535, then the meaning is undefined. If the decimal value of the Length/Type field 40 is greater than or equal to 1536, then it acts to specify a frame type.
The DATA field 42 is a 46-1500 byte field containing the actual data to be transmitted between two stations.
The PAD field 44 contains padding, if required, to bring the total packet length up to a certain value.
The frame check sequence (FCS) 46 is a 32-bit cyclic redundancy check (CRC) value computed on the entire frame, exclusive of preamble 32 and SFD 34. The FCS 46 is appended to the end of the frame and is used to determine frame validity.
A MAC Control frame is a specific implementation of a MAC frame. A MAC Control frame is diagrammed in FIG. 4. MAC Control frames 48 comprise MAC Client data for the CSMA/CD MAC. They are encapsulated by the CSMA/CD MAC shown in FIG. 3; that is, they are prepended by a Preamble 32 and Start-of-Frame delimiter 34 and appended by an FCS 46. MAC Control frames are distinguished from other MAC frames only by the contents of their Length/Type field 40, i.e., the Length/Type identifier. MAC Control frames 48 are thus identified by a unique code that is to be placed in the 2 byte Length/Type field 40. MAC Control frames 48 also have a 2 octet (or byte) MAC Control Opcode field 50 and an associated MAC Control Parameters field 52 as their MAC Client Data 42. The only opcode and Parameters Field defined to date under the 802.3x Specification is the Pause opcode and its associated 2 byte parameter field called the pause.sub.-- time parameter. In accordance with the protocol, unsupported MAC Control frames are to be discarded at the MAC Control sublayer. Only a single opcode may be associated with a particular MAC Control frame. When a station receives a MAC Control frame with the Pause opcode, it is required to stop transmissions for a time equal to the pause.sub.-- time parameter. In this way, if a switch is congested and cannot temporarily accommodate any new data from end stations, the switch can instruct the end stations to stop transmitting data to the switch by sending MAC Control frames to the end stations.
As presently specified, opcode 00-00 is reserved, opcode 00-01 is the PAUSE opcode and opcodes 00-02 through FF-FF are reserved, i.e., unassigned to any function by the IEEE 802.3 specification.
The MAC Control frame has the same Preamble, SFD and FCS as a normal packet. The Destination Address for a frame with a Pause opcode (a "PAUSE frame") has to be either a specific unicast address on the network or the specific reserved multicast address of 0180-C200-0001.sub.HEX. The Source Address is the same as in a normal packet. The Length/Type field for MAC Control frames no longer indicates length, but instead indicates that the packet is a MAC Control frame. The Value in the Length/Type field for MAC Control frames is always set to 8808.sub.HEX. The MAC Control opcode includes two octets which consist of a flow control command, called a MAC Control opcode. Only one of these, PAUSE, is presently defined under IEEE 802.3x. MAC Control parameters are N octets of parameters associated with the flow control command. The PAD is similar to normal packets except that in a MAC Control frame, it must be filled with O's.
The PAUSE opcode causes inhibition of normal packets for a specified amount of time defined by the value of the MAC Control parameter associated with it. PAUSE does not inhibit transmission of other MAC Control frames. PAUSE has a single parameter called pause.sub.-- time. The pause.sub.-- time parameter is a 2 byte number. It is in units of time called pause.sub.-- time quanta. One pause.sub.-- time quantum is equivalent to 512 bit times. A bit time is 100 ns for 10 Mb Ethernet, 1 Ons for 100 Mb Ethernet, and 1 ns for Gigabit Ethernet. The pause.sub.-- time parameter starts after the completion of the reception of the MAC Control frame that contained the PAUSE opcode. As pointed out above, the PAUSE opcode is only valid for MAC Control frames with the correct multicast Destination Address or the correct station unicast Destination Address.
Turning to FIG. 2, as contemplated in the IEEE 802.3x protocol, MAC Control frame generation occurs in the MAC Control Sublayer 28 in response to information received from the MAC Client layer 31 (typically the LLC 30 (FIG. 1)). For example, the MA.sub.-- DATA.request primitive defines the transfer of data from a MAC client entity to a single peer entity or multiple peer entities in the case of group addresses. The MA.sub.-- DATA.request primitive is formed of the parameters: destination.sub.-- address, m.sub.-- sdu and service.sub.-- class. The destination.sub.-- address parameter may specify either an individual or a group MAC entity address. It must contain sufficient information to create the DA (destination address) field that is prepended to the frame by the local MAC sublayer entity and any physical information. The m.sub.-- sdu parameter specifies the MAC service data unit to be transmitted by the MAC sublayer entity. There is sufficient information associated with m.sub.-- sdu for the MAC sublayer entity to determine the length of the data unit. The service.sub.-- class parameter indicates a quality of service requested by the MAC client which is only a single quality in the case of the CSMA/CD MAC protocol regardless of the request. The MA.sub.-- DATA.request primitive is generated in accordance with IEEE 802.3x clause 2.3.1.3 by the MAC client entity whenever data shall be transferred to a peer entity or entities. This can be in response to a request from higher protocol layers or from data generated internally to the MAC client, such as required by Type 2 LLC service. Receipt of the primitive will cause the MAC entity to insert all MAC specific fields, including DA (destination address), SA (source address), and any fields that are unique to the particular media access method, and pass the properly formed frame to the lower protocol layers for transfer to the peer MAC sublayer entity or entities.
The MA.sub.-- DATA.indication primitive defines the transfer of data from the MAC sublayer entity (through the optional MAC Control sublayer, if implemented) to the MAC client entity or entities in the case of group addresses.
The primitive includes parameters: destination.sub.-- address, source.sub.-- address, m.sub.-- sdu and reception.sub.-- status. The destination.sub.-- address parameter may be either an individual or a group address as specified by the DA field of the incoming frame. The source.sub.-- address parameter is an individual address as specified by the SA field of the incoming frame. The m.sub.-- sdu parameter specifies the MAC service data unit as received by the local MAC entity. The reception.sub.-- status parameter is used to pass status information to the MAC client entity.
The MA.sub.-- DATA.indication primitive is passed from the MAC sublayer entity (through the optional MAC Control sublayer, if implemented) to the MAC client entity or entities to indicate the arrival of a frame to the local MAC sublayer entity that is destined for the MAC Client. Such frames are reported only if they are validly formed, received without error, and their destination address designated the local MAC entity. Frames destined for the optional MAC Control sublayer are not passed to the MAC Client if the MAC Control sublayer is implemented. If the local MAC sublayer entity is designated by the destination.sub.-- address parameter of a MA.sub.-- DATA.request, the indication primitive will also be invoked by the MAC entity to the MAC client entity. This characteristic of the MAC sublayer may be due to unique functionality within the MAC sublayer or characteristics of the lower layers (for example, all frames transmitted to the broadcast address will invoke MA.sub.-- DATA.indication at all stations in the network including the station that generated the request).
The MA.sub.-- CONTROL.request primitive defines the transfer of control requests from the MAC client to the MAC Control Sublayer. Implementation of the MA.sub.-- CONTROL.request primitive is mandatory if the optional MAC Control Sublayer is implemented in a device. The parameters of the primitive are:
destination.sub.-- address, opcode and request.sub.-- operand.sub.-- list. The destination.sub.-- address parameter may specify either an individual or a group MAC entity address. It must contain sufficient information to create the DA field that is prepended to the frame by the local MAC sublayer entity. The opcode specifies the control operation requested by the MAC client entity. The request.sub.-- operand.sub.-- list is an opcode-specific set of parameters. This primitive is generated by a MAC Client (such as the LLC 31) whenever it wishes to use the services of the optional MAC Control sublayer entity. At present the only defined opcode is PAUSE.
The MA.sub.-- CONTROL.indication primitive defines the transfer of control status indications from the MAC Control sublayer to the MAC client. Implementation of the MA.sub.-- CONTROL.indication primitive is mandatory if the optional MAC Control sublayer is implemented in a device. The parameters for the primitive include: opcode and indication.sub.-- operand.sub.-- list.
The PAUSE operation is used to inhibit transmission of data frames for a specified period of time. A MAC Control client wishing to inhibit transmission of data frames from another station on the network generates a MA.sub.-- CONTROL.request primitive specifying:
Note that the PAUSE operation will not inhibit transmission of MAC Control frames and that PAUSE frames will only be sent by stations configured for the full-duplex mode of operation. The specified multicast address has been reserved for use in MAC Control PAUSE frames for inhibiting transmission of data frames from a DTE in a full-duplex mode IEEE 802.3 LAN. IEEE 802.1 D-conformant bridges will not forward frames sent to this particular address. This approach allows individual LANs connected by bridges to be isolated and to operate independently without undue spread of PAUSE frames. It also relieves the MAC Control sublayer and its client from having to know, and maintain knowledge of the individual 48 bit addresses of other DTE in a full-duplex environment.
In full-duplex mode under IEEE 802.3x a station ignores any collision detect signal generated by the Physical Layer. Transmit Access Management in a full-duplex station will always be able to transmit its frames without contention, so there is never any need to process a collision detect signal and in accordance therewith retransmit later as with half-duplex Ethernet.
While this approach is successful in implementing full-duplex flow control in Ethernet network systems, a number of enhancements would be desirable to provide enhanced speed, throughput and interoperability over this basic flow control system while maintaining full compatibility with the IEEE standard.